home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 April / EnigmA AMIGA RUN 17 (1997)(G.R. Edizioni)(IT)[!][issue 1997-04][EAR-CD].iso / EARCD / biz / demo / Reflections4De.lha / Ref4Demo / skripte.lha / oval.skr < prev    next >
Text File  |  1996-07-26  |  2KB  |  122 lines

  1. REFSKRIPT
  2. ;Aufruf:        oval <radius> <breite> <npkte> <name> */
  3.  
  4.  
  5. GET_N_PARAMS
  6. GET_RESULT res
  7. IF_EQUAL_GOTO res 4 w1
  8. RETURN 0
  9. >w1:
  10. GET_PARAM_NR 1
  11. GET_RESULT rad
  12. GET_PARAM_NR 2
  13. GET_RESULT breite
  14. GET_PARAM_NR 3
  15. GET_RESULT np
  16. GET_PARAM_NR 4
  17. GET_RESULT name
  18. FUNCTION breite-(rad*2)
  19. GET_RESULT verschieb
  20. IF_LESS_GOTO rad 0.00001 error
  21. IF_LESS_GOTO np 3 error
  22. IF_LESS_GOTO verschieb 0 error
  23. GOTO w2
  24. >error:
  25. RETURN 0
  26. >w2:
  27. ; Anzahl punkte durch vier teilbar machen */
  28. MOD np 4
  29. GET_RESULT np1
  30. IF_EQUAL_GOTO np1 0 w2a
  31.   FUNCTION np+4-np1
  32.   GET_RESULT np
  33.   
  34. >w2a:
  35. /* Makro für Polygon-kreis aufrufen */
  36. ;param=rad np name
  37. PRINT kreis.skr ( rad np name )
  38. CALL kreis.skr rad np name
  39.  
  40. GET_RESULT name
  41.  
  42. POL_EXIST name
  43. GET_RESULT res
  44. IF_STR_EQUAL_GOTO res JA w3
  45. RETURN 0
  46. >w3:
  47. IDIV np 4
  48. GET_RESULT i
  49. GET_POL_PKT_KOORD name i
  50. GET_RESULT res
  51. COPY_WORD res 1
  52. GET_RESULT x
  53. COPY_WORD res 2
  54. GET_RESULT y
  55.  
  56. SUB rad y
  57. GET_RESULT delta
  58. ; Jetzt alle Punkte mit x>0 um verschieb verschieben */
  59. DIV rad np
  60. GET_RESULT r1
  61. DIV r1 100
  62. GET_RESULT r1
  63. SET_VAR i 1
  64. >doloop1:
  65. ;DO i=1 to np
  66.    SUB i 1
  67.    GET_RESULT i1
  68.    
  69.    GET_POL_PKT_KOORD name i1
  70.    GET_RESULT res
  71.    COPY_WORD res 1
  72.    GET_RESULT x
  73.    COPY_WORD res 2
  74.    GET_RESULT y
  75.    FUNCTION ABS(x)
  76.    GET_RESULT absx
  77.     
  78.    IF_GREATER_GOTO absx r1 else
  79.    ; punkte auf 0-achse */
  80.     FUNCTION x+(verschieb/2)
  81.     GET_RESULT x
  82.     POL_PKT name i1 x y
  83.     GOTO w3a       
  84. >else:
  85.     IF_LESS_GOTO x 0 w3a
  86.        ADD x verschieb
  87.        GET_RESULT x
  88.        POL_PKT name i1 x y
  89.     
  90. >w3a:
  91.   ADD i 1
  92.   GET_RESULT i
  93.   PRINT  doloop i
  94.   IF_GREATER_GOTO i np fert1
  95.   GOTO doloop1
  96. >fert1:
  97.  
  98. FUNCTION (np/4)
  99. GET_RESULT i
  100. FUNCTION np-(np/4)
  101. GET_RESULT j
  102.  
  103. GET_POL_PKT_KOORD name i
  104. GET_RESULT res
  105. COPY_WORD res 1
  106. GET_RESULT x
  107. COPY_WORD res 2
  108. GET_RESULT y
  109. SUB y delta
  110. GET_RESULT y
  111. POL_PKT name i x y
  112. GET_POL_PKT_KOORD name j
  113. GET_RESULT res
  114. COPY_WORD res 1
  115. GET_RESULT x
  116. COPY_WORD res 2
  117. GET_RESULT y
  118. ADD y delta
  119. GET_RESULT y
  120. POL_PKT name j x y
  121. RETURN name
  122.